package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;

import java.util.List;

public interface QuanZiApi {

    /**
     * 查询好友动态
     *
     * @param userId 用户id
     * @param page 当前页数
     * @param pageSize 每一页查询的数据条数
     * @return
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 发布动态
     *
     * @param publish
     * @return 发布成功返回动态id
     */
    String savePublish(Publish publish);

    /**
     * 查询推荐动态
     *
     * @param userId 用户id
     * @param page 当前页数
     * @param pageSize 每一页查询的数据条数
     * @return
     */
    PageInfo<Publish> queryRecommendPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 根据id查询动态
     *
     * @param id
     * @return
     */
    Publish queryPublishById(String id);

    /**
     * 点赞功能
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean likeComment (Long userId, String publishId);

    /**
     * 取消点赞功能
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLikeComment(Long userId, String publishId);

    /**
     * 查询点赞数
     *
     * @param publishId
     * @return
     */
    Long queryLikeCount(String publishId);

    /**
     * 查询用户是否点赞该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String publishId);

    /**
     * 喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean loveComment(Long userId, String publishId);

    /**
     * 取消喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLoveComment(Long userId, String publishId);

    /**
     * 查询喜欢数
     *
     * @param publishId
     * @return
     */
    Long queryLoveCount(String publishId);

    /**
     * 查询用户是否喜欢该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLove(Long userId, String publishId);

    /**
     * 查询评论
     *
     * @param publishId  发布动态id
     * @param page  页数
     * @param pageSize  条数
     * @return
     */
    PageInfo<Comment> queryCommentList(String publishId,Integer page, Integer pageSize);

    /**
     * 发表评论
     *
     * @param userId  登录ID
     * @param publishId  发布动态id
     * @param content  评论内容
     * @return
     */
    Boolean saveComment (Long userId, String publishId,String content);

    /**
     * 查询评论数
     *
     * @param publishId
     * @return
     */
    Long queryCommentCount(String publishId);

    /**
     * 查询对我的点赞消息列表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryLikeCommentListByUser (Long userId, Integer page, Integer pageSize);

    /**
     * 查询对我的喜欢消息列表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryLoveCommentListByUser (Long userId, Integer page, Integer pageSize);

    /**
     * 查询对我的评论消息
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentListByUser (Long userId, Integer page, Integer pageSize);

    /**
     * 查询相册表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryAlbumList(Long userId, Integer page , Integer pageSize);

    Long queryUserPublishCount(String uid, String state,String id);

    List<Publish> queryUserPublish(Integer pagesize, Integer page, String sortProp, String sortOrder, String id, String sd, String ed, String uid, String state);

    Boolean top(String id);

    Boolean unTop(String id);

    Boolean messagePass(String[] ids);

    Boolean messageReject(String[] ids);

    Boolean messageRevocation(String[] ids);

    Object queryStateWait(String id,Long sd,Long ed);

    Object queryStatePass(String id,Long sd,Long ed);

    Object queryStateNoPass(String id,Long sd,Long ed);

    /**
     * 查询评论并排序
     *
     * @return
     */
    List<Comment> queryCommentsByPublishId(String pagesize, String page, String sortProp, String sortOrder, String messageID);

    /**
     * 根据动态id,评论类型,判断该评论类型的个数
     *
     * @param publishId
     * @param type
     * @return
     */
    Long queryCommentCount(String publishId,Integer type);

}